# 列表推导式,按照一定规则快速生成一个列表的方法.
# 格式1: 变量 = [要插入列表中的数据  for 临时变量 in 容器]  按照循环规则进行列表生成
# 格式2: 变量 = [要插入列表中的数据  for 临时变量 in 容器 if 条件]  循环后进行条件判断,然后生成列表

# 需求1:创建一个列表,内部是从0-9的数字
# for
list1 = []
for i in range(10):
    list1.append(i)

print(list1)

print('-----------------------')
# 推导式
list2 = [i for i in range(10)]
print(list2)

print('---------------------------')

# 需求2: 创建一个列表,内部从0-9的偶数
# for
list3 = []
for i in range(10):
    if i % 2 == 0:
        list3.append(i)

print(list3)

print('-----------------------')
# 推导式
list4 = [i for i in range(10) if i % 2 == 0]

print(list4)

print('---------------------------')

# 需求3:创建一个列表,内容为['传智1.jpg', '传智2.jpg'.......'传智10.jpg']
# for
list5 = []
for i in range(1, 11):
    list5.append(f'传智{i}.jpg')

print(list5)

print('-----------------------')
# 推导式
list6 = [f'传智{i}.jpg' for i in range(1, 11)]

print(list6)

print('---------------------------')

# 需求4: 创建一个列表,内部存放从0-100间既不是7的倍数,数字中又不含有7的数字
# for
list7 = []
for i in range(101):
    if i % 7 != 0:
        if str(i).count('7') == 0:
            list7.append(i)

print(list7)

print('-----------------------')
# 推导式
list8 = [i for i in range(101) if i % 7 != 0 if str(i).count('7') == 0]
# list8 = [i for i in  range(101) if i % 7 != 0 and str(i).count('7') == 0]
print(list8)

print('---------------------------')

# 练习:
# 1. 使用推导式快速生成 [1,4,9,16,25... 100]
list9 = [i * i for i in range(1, 11)]
print(list9)

# 2. 快速生成一个列表,内部是1-100之间的所有奇数
list10 = [i for i in range(1, 101) if i % 2 != 0]
print(list10)

# 3. 生成个一个列表, 内部是[传智01.txt, 传智02.txt.....传智10.txt]
list11 = [f'传智{i:02d}.txt' for i in range(1, 11)]
print(list11)
